#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
//int ADD(int x, int y)
//{
//	return x + y;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int r = ADD(a, b);
//	printf("%d\n", r);
//	return 0;
//}

//void print()
//{
//	printf("hehe\n");
//	return;
//}
//int main()
//{
//	print();
//	return 0;
//}

//int print(int x)
//{
//	return 2.0;
//}
//int main()
//{
//	int a = 0;
//	print(a);
//	printf("%d", a);
//	return 0;
//}
//int in()
//{
//	return 3.14;
//}
//int main()
//{
//	printf("%d", in());
//	return 0;
//}

//int p(int x, int y)
//{
//	if (x > y)
//		return 1;
//	else(x < y)
//		return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("%d", p(a,b));
//	return 0;
//}

//int p(int x, int y)
//{
//	if (x < y)
//		return 1;
//	else
//		return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("%d", p(a, b));
//	return 0;
//}

//void set_arr(int arr[],int y)
//{
//	int i = 0;
//	for (i = 0; i < y; i++)
//	{
//		arr[i] = -1;
//	}
//}
//void print_arr(int arr[], int y)
//{
//	int i = 0;
//	for (i = 0; i < y; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print_arr(arr, sz);
//	set_arr(arr,sz);
//	print_arr(arr,sz);
//	return 0;
//}
bool a(int l)
{
	if (((l % 4 == 0) && (l % 100 != 0)) || (l % 400 == 0))
		return true;
	else
		false;
}
int p(int x, int y)
{
	int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	int day = days[y];
	if (a(x) && y == 2)
	{
		day++;
	}
	return day;
}
int main()
{
	int year = 0;
	int month = 0;
	scanf("%d %d", &year, &month);
	int day = p(year, month);
	printf("%d\n", day);
	return 0;
}